I like programming. I like also emulation. So I decided to write a Playstation emulator since 1) PsEmuPro is dead and 2) I don't like commercial emus. FPSE is a good code started by BERO; it's open-source, so you can help me if you want. ------------------------------------------------> 09/011/1999 Today I got FPSE v0.05 from "http://www.geocities.co.jp/Playtown/2004/" I don't have Cygnus, so I started conversion to DJGPP+RSX. ------------------------------------------------> 17/011/1999 Good news: FPSE runs with interpreter, with some tricks on $1F801070 it runs the BIOS too. Compiler needs ESI points to REG structure, removed static PCBASE pointer, but it doesn't work yet. ------------------------------------------------> 18/011/1999 Ok, adjusted IDX in compile1(). Now the BIOS runs with compiler, then it hangs at: 0x000044F8: read short sio_status,0000 Ergo: it's the time to do pads & memcards. ------------------------------------------------> 20/011/1999 At "http://www.egroups.com/group/psxdev/" I have found some info on the irq mask. bit 0: VSync bit 1: GPU bit 2: CD-ROM bit 3: DMA bit 4: Root counter 0 bit 5: Root counter 1 bit 6: Root counter 2 bit 7: Controllers bit 8: Serial port bit 9: SPU bit A: PIO Corrected these masks and moved to "opdef.h" After some fixes, LifeDemo runs again. ------------------------------------------------> 21/011/1999 Now bios can be used for running demos. If bios is loaded and want to run a PSX-EXE, execution is stopped at $80030000, so bios calls $A0, $B0 and $C0 are compiled. This startup-code doesn't need hardware update, so simply run with interpreter. ------------------------------------------------> 04/012/1999 Finally after many hours of work with some demos, I have discoveded how irq's work on PSX. I have written a small text with these informations. The bios runs fine but it hangs before running the shell. Started some works on GTE. ------------------------------------------------> 31/12/1999 Today is the last day of this hard year. HAPPY NEW YEAR!!!!!!!! ------------------------------------------------> 03/01/2000 Today BERO released FPSE 0.06. I'm adding all changes to my sources (wow, mdec support!). ------------------------------------------------> 04/01/2000 GPU always use DIB section. Started work on debugger. Corrected some bugs: * All memory access are closed to 8 MB (infact 0x000000 and 0x00200000 point to the same location) * GPU dma are closed to 8 MB (see above); * Added frame rate limiter to 60Hz (see HW.C for details); ------------------------------------------------> 05/01/2000 Debugger is finished. Finished SIO emulation. I have written a text file with all informations about the PSX serial port I have found. ------------------------------------------------> 09/01/2000 Finished gamepad & memory card emulations. Emulated 32us timing ACK for pads. ------------------------------------------------> 10/01/2000 Changed layout of the code: * Now you need to include only "fpse.h" * REG is global, so you don't need to pass it in many functions * All flags like verbose, in_slot, ecc are grouped in FPSE_Flags variable. * The only types allowed are INT8, UINT8, INT16, UINT16, INT32, UINT32. All types like BYTE, PIXEL, ecc disappear. * Functions must return FPSE_OK or FPSE_ERR. ------------------------------------------------> 11/01/2000 Added dualshock callback. Added screenshot function (press F12). Added CDNull driver. Fixed NOR bug in compile.c ------------------------------------------------> sorry, I lost this date.... I sent my sources to the author BERO. Started work on serial port. ------------------------------------------------> 25/01/2000 Serial port emulation under win32 is done. Now F11 enable/disable FPS display. ------------------------------------------------> 10/02/2000 Corrected huge bug in DMA, now we have nice compatibility. Better cdrom support. Better debugger. Fixed some DMA bugs. Fixed some RootCounters bugs. Fixed some bugs in GPU clipping. A little fix in GTE.C for RTPS and RTPT opcodes. Added support for other input devices. Bios rom appear also at 1FC00000h and 9FC00000h, so they are added in MEM.C. Bios emulation of pads is commented because the previous change. Started plugin development for GPU and SPU. No 'LoadLibrary' is required, so the code is portable like the previous versions. Now screenshots can be saved with F12 in other places (default is 'SNAPS') ------------------------------------------------> 15/02/2000 Post update to BERO. ------------------------------------------------> 16/02/2000 FPSE007bin1 and FPSE007src1 are online. ------------------------------------------------> 04/03/2000 * New aspi driver with a full CD Audio and bus mastering support. * New plugin (SPUSEAL) based on 0.07 source code and compiled with Visual C++ 5.0. * New graphic plugin (GPUDX3): it uses DirectX 3.0 and D3D, it runs great even on NT4, but it needs to be fixed in some functions. Surprising, I have noted that Execute Buffers are a little faster than DrawPrimitive. * I have tested FPSE on WinNT 2000, AND IT WORKS!!!!!!!!!!! * run under Linux with NULL drivers ------------------------------------------------> 15/03/2000 Fixed a bug in DMA6, now Bouncer 2 and other demos runs great in all configurations. Little improvement in GPUDx3. Known bugs are missing semi-trasparency, line functions and a bad clipping for D3D functions. GTE.c has been substituited Removed Windows.h from FPSE.H and HW.C if the bios is not present in the current directory, it will be searched in the "BIOS" sub-directory. CDROM.c: some changes but it won't work yet. EMU.c: go() function is moved in RUNTIME.c Gamepads are done in plugin format. Added mouse driver. Modified the *_Open() function of plugins and the FPSE SDK is almost done. Now all the system-dependant code is contained in WIN.C and Win32Def.h Now memory cards must be in the "MEMCARDS" sub-directory. FULL Rs232 support. ------------------------------------------------> 17/03/2000 FPSE007bin2 and FPSE007src2 are online. Now you can use also CPE and COFF files. Unfortunally something is missing for COFF images. I have also tried Bouncer 2 and Z2 preview: With Bouncer 2 in PSX_EXE and CPE formats it starts but it doesn't work. With the COFF image it runs fine but gamepads are not available (not a bug of gamepad emulation, the code don't initialize them but why?). With Z2 preview it starts but then it hangs: we must set the correct value to RA before running the exe. Then I have converted COFF to PSX_EXE with ECO2EXE.exe and all works great. Infact this utility has added something... Corrected a bug in JALR instruction: on the MIPS manual I have read that this opcode can use any register, not only RA, so I have fixed it, but only in CPU2.c Corrected a bug in PRIM2.H, see LineG2,3,4 declaration. Added script file support ("-s" option) In the command line write FPSE -sStart.bat if you want to run "Start.bat" Script files can contain the following commands: * LOAD Syntax: LOAD
Load in the system ram at the specified address. If
is not present, must be an EXE file. * RUN Syntax: RUN Similar to LOAD command, also it setup PC and SP. Filename must be an EXE file. With Script files now you can run more demo than before; the load order is: 1) the BIOS (if not emulated) 2) LIBPS.exe (it is always loaded if present in the current path) 3) Script file 3) Executable written in the command line With Script files and CPE and COFF formats I could test other demos, now I have counted 62 demos running. GPUDx3 is not completed, but it runs FAST. Unfortunally DirectX 3.0 under NT4 doesn't support surfaces larger than the primary surface, so you must run at 1024x768 or higher with this OS, otherwise FPSE will not start. If you have DirectX 5.0 or higher this limitation has been removed even if you use older interface. When using the new exe, make sure that: * you have copied RSXNT.DLL and AUDIOW32.DLL in the FPSE root dir. (in previous version) * you have copied some plugin from plugin dir to the FPSE root dir. the names are: GpuRend.dll = for the GPU SpuRend.dll = for the SPU Joy0Rend.dll = device connected in port 0. Joy1Rend.dll = device connected in port 1. ------------------------------------------------> 26/03/2000 I have found some demos in A/R format so I want to add support for them. ------------------------------------------------> 28/03/2000 Added partial PIO watching and A/R support. ------------------------------------------------> 02/04/2000 Script files now can be where you want. Before they must be in FPSE root dir. Added overlay surface to GPUDx3 (looks GREAT!). ------------------------------------------------> 11/04/2000 Post a message online. ------------------------------------------------> 16/04/2000 New GPUSoft written: textures are cached for better speed. Added STP to DrawF & DrawG Added AGE to DrawSprite. I fixed directory structure: -+ }- ActionR // Action replay roms and cheat list }- BIOS // BIOS images }- MemCards // Memory card images }- Plugin // Plugin DLL }- Snaps // Screenshots ------------------------------------------------> 18/04/2000 Corrected big bug in DMA6: OT must end with $00FFFFFF Corrected big bug in SPU DMA. ------------------------------------------------> 21/05/2000 Finally I've found the missing and CDROM run! If sector size is 2352, DMA buffer is divided in 2 section: 12 bytes with header 2340 bytes with data In this case DMA is done with 2 separate commands. ------------------------------------------------> 25/05/2000 Today I met Mr.Fog. Welcome in our family! ------------------------------------------------> 26/06/2000 Corrected a bug in MDEC.C. MDEC now runs fine. Added 24bpp to GpuSoft. ------------------------------------------------> 01/06/2000 Today I'm 25 years old. Happy birthday, Li Dhay Chen! ------------------------------------------------> 03/06/2000 Fixed huge GPU bug in DrawGT. ------------------------------------------------> 07/06/2000 Finally FPSE configurator and SDK are done. FPSECfg may need some adds, but functions are OK. ------------------------------------------------> 08/06/2000 Modified FPSECfg: * Added splash screen at startup. * Added "About" and "Run" buttons. * Added command line editbox. Thanks to Mr.Fog for the suggestions. ------------------------------------------------> 09/06/2000 Finally BIOS autoboot works OK Other changes to RootCounters Now recompiler must be rewritten for: * A FULL overlay support * Register cache for more speed. ------------------------------------------------> 19/06/2000 * Finally recompiler works fine with overlays * Many fixes to GTE.C, now Lara looks very nice! * GPUPSEMU is finished, and it's GREAT! * Today I got MANTA demo, but it won't work (yet). ------------------------------------------------> 20/06/2000 * Corrected bug in DMA6 now MANTA works fine, but other GTE bugs are present. * Changes to RootCounters * Added Cop2 0x498412: now Kula World runs fine! ------------------------------------------------> 22/06/2000 * Corrected a bug in gamepad emulation, now both Tekken3 demo and commercial versions are fully playable. Unfortunally it hangs when playing MDEC... ...so you must press START button before MDEC's ------------------------------------------------> 23/06/2000 * Corrected a bug il Memory card emulation. Now they should run better. ------------------------------------------------> 25/06/2000 * Some adds to the configurator. ------------------------------------------------> 27/06/2000 * WOW! ROOTCOUNTERS FINALLY FULLY EMULATED!!! Now Crash Bandicoot 3-Warped Demo is fully playable! Thanks to Joshua Walker for the informations. ------------------------------------------------> 28/06/2000 * Corrected some bugs in MDEC decoding core. Thanks to Mr. Carlos for the help. * Medievil Demo and Commercial work fine but they are not playable because some GTE big bugs. ------------------------------------------------> 29/06/2000 * CDRom support is made in plugin format. - Modified FPSECFG in the CD-Rom section - Modified CDROM.C, CD.H, HW.C and Win.C in the emu. The new plugin name in FPSE root must be CDREND.DLL * Added the first 3 CD Plugin: CDASPI, CDPsEmu and CDNull. ------------------------------------------------> 1/07/2000 * Modified FPSE for INI setup * Corrected a bug CallBack irq handling ------------------------------------------------> 2/07/2000 * Corrected some bugs in CDROM.C * CdlReadN and CdlReadS are now separated. MDECs should work better. ------------------------------------------------> 3/07/2000 * FPSE 0.08 RELEASED TO OUR BETA-TESTERS!!! ------------------------------------------------> 7/07/2000 * FPSE 0.08 RELEASED TO THE ENTIRE WORLD ------------------------------------------------> 11/07/2000 * Corrected some bugs in the GTE ------------------------------------------------> 13/07/2000 * Corrected another bug in the GTE Thanks to Eastwind for the help. * Changed memory READ/WRITE instructions. Now the Emu runs at better speed than before. Thanks to Roor (the coder of AdriPSX) for the help. ------------------------------------------------> 16/07/2000 * A change is done to the SDK: if a plugin saves something in RAM, it must call the FlushRec() function and tell that the area is changed. Now Medievil runs with the compiler too! ------------------------------------------------> 17/07/2000 * Big change to the GTE: now many things are corrected, but RTPT and RTPS force MAC0 and IR0 to ZERO, otherwise they don't work. I don't know why, but it happens. ------------------------------------------------> 21/07/2000 * Little change to the compiler. ------------------------------------------------> 22/07/2000 * Other changes to the GTE. ------------------------------------------------> 24/07/2000 * CDASPI plugin released. ------------------------------------------------> 25/07/2000 * Changed sources layout. Now porting should be a little easier.